A Video-on-Demand (VOD) system delivers video content to a user as a video data stream whenever the user selects to view the video content. An Audio-Video-on-Demand (AVOD) system is a VOD system that also delivers audio content to a user as an audio data stream whenever the user selects to listen to the audio content. Since commercial VOD systems typically process video content and audio content (i.e., media content), the term VOD system implies both a VOD and AVOD system.
The VOD system delivers the video data stream to either a set-top box that allows the user to view the video content in real time, or a device such as a computer, digital video recorder (DVR), personal video recorder, or portable media player that allows the user to view the video content in the future. Cable, satellite, and telecommunications television providers typically offer VOD streaming, such as pay-per-view, whereby a user buys or selects a movie or television program and it begins to play on the television set almost instantaneously, and downloading to a DVR rented from the provider, for viewing in the future.
Caching allows a computer system to store a copy of data that it frequently accesses in a temporary storage area that is rapidly accessible, thus alleviating the time and expense to continually retrieve the data from the original location. Due to the increasing size of audio and video media libraries, the VOD system employs hierarchical caching (i.e., caching at multiple levels of the storage hierarchy) to balance storage and retrieval efficiency against bandwidth performance.
Hierarchical caching in the VOD system may utilize a variety of storage device types in combination with a variety of network topologies. These storage device types include Dynamic Random Access Memory (DRAM), Serial ATA (SATA) mass storage devices such as a hard disk drive or optical drive, Small Computer System Interface (SCSI) disks, and non-volatile computer memory such as flash memory. Given a particular usage pattern of the users, the VOD system may store different types of video content streams on different types of storage devices. The VOD system may stream video content that has the highest popularity from either DRAM or flash memory, and video content that has the lowest popularity from disks on a central network resource if the necessary bandwidth is available. The difficulty lies in correctly determining which type of the video content to store at each caching layer, and appropriately determining the size of those layers in light of the size of the library and utilization patterns for the users. A further difficulty lies in the VOD system that employs flash memory in a hierarchical caching architecture because the number of memory writes performed has an impact on the useful life of the flash memory. If it performs too many writes, the flash memory will suffer burnout. Thus, hierarchical caching in the VOD system that utilizes flash memory must take the burnout factor into account and attempt to maximize the performance gain of using flash memory, while minimizing the writes performed. Since the popularity of video content is linked to the usage pattern of the users, the determination of the popularity of the video content must be automated for the VOD system and cannot be set by an outside method because the usage pattern of each user can vary, and each user can change their usage pattern quickly, thereby changing the popularity of the video content. Therefore, a hierarchical caching algorithm for the VOD system must determine the popularity of the video content dynamically and use feedback to adjust the popularity to maximize efficiency and bandwidth for the content delivery.